#pragma once
#include "Event.h"
#include "FatPointer.h"
#include <map>
#include <list>
#include <string>

typedef std::map<std::string, std::list< FatBase<void> * > > EventsMap;
typedef std::list< FatBase<void> * > EventsList;

class EventDispatcher
{
public:
	EventDispatcher(void);
	~EventDispatcher(void);

	void addEventListaner(Event &e, FatBase<void> *method);
	void removeEventListener(Event &e, FatBase<void> *method);
	void dispatchEvent(Event *e);

protected:

	 EventsMap events;

};
